[レポート] サーバーレス、機械学習、シチズン・サイエンスによる野生動物の保護 / Conserving wildlife with serverless, ML, and citizen science #reinvent #COM310
はじめに
こんにちは、お雑煮を作るべきか迷っている Classmethod Canada の Funa です。今回は野生動物の保護に興味があり、アラスカへおもむきがちな私が気になったセッション「サーバーレス、機械学習、シチズン・サイエンスによる野生動物の保護」についてレポートします。
セッション概要
登壇者:Ed Miller, Senior Principal Engineer at Arm and Developer at BearID Project
The BearlD Project develops machine learning applications to identify individual bears for their study and conservation. However, supervised machine learning requires significant time and expertise to curate a suitable dataset. Citizen scientists, such as the thousands of viewers of Explore.org's live bear cams, can help fill this gap. In this dev chat, learn how the BearlD team developed a web application using AWS Amplify Studio, Amazon Rekognition, and Amazon SageMaker to engage Explore.org viewers for human-in-the-loop machine learning.
日本語化したものはこちらです。
BearlD プロジェクトは、研究と保護のために個々のクマを識別するための機械学習アプリケーションを開発しています。 ただし、教師あり機械学習では、適切なデータセットをキュレートするためにかなりの時間と専門知識が必要です。 Explore.org のライブ クマ カメラの何千人もの視聴者など、市民科学者は、このギャップを埋めるのに役立ちます。 この開発者チャットでは、BearlD チームが AWS Amplify Studio、Amazon Rekognition、Amazon SageMaker を使用して Web アプリケーションを開発し、Explore.org の視聴者を人間参加型の機械学習に引き込む方法を学びます。
セッション内容
Background
登壇者のエドさんには 2 つの経歴があります。
- Arm のシニア・プリンシパルエンジニア
- マルチメディア製品などのハードウェアやソフトウェア開発に 25 年以上従事した経験
- BearID プロジェクトのディレクター兼ソフトウェア開発者
- 非営利組織のボランティア
- 野生動物保護のための機械学習アプリケーションとウェブアプリケーションの開発
Bearcams and community
野生のクマは冬眠に備えて体力をつけるために体重を増やします。Fat Bear Week 2022 ではどの野生のクマが冬に向けて一番太ったかを競うトーナメントを行いました。さて、どうやって痩せているときのクマとご飯を蓄えて肥えたクマが同じクマであることを識別できるでしょうか?
この写真を見て分かる通り、野生の茶色いクマの判別をするのはとても難しいです。 (最近 Youtube で動物園の動画を夕飯時に見るのにハマっているのですが、カピバラやその他の動物もたくさんいると本当に見分けがつかないです。。)
もともと野生動物に興味があってアラスカのブルックス川のライブカメラを見ていたエドさんとパートナーは、趣味で機械学習について学んだあと、ハンズオンで学習を深めるために写真やビデオから野生のクマを自動的に識別するディープラーニング アプリケーションを開発することにしました。
その時に Dog Hipsterizerという機械学習を用いて写真上の犬の顔を特定して眼鏡とヒゲをかけさせるディープラーニングを発見し、クマにその技術を応用したところうまくいくことが判明しました。 (眼鏡をかけた犬とクマたち、かわいいです)
ここから、野生のクマの顔識別システムを作りだすステップが進んできました。
BearID Project
野生のクマの顔識別を行う機械学習のパイプラインは以下の通りです。
- 顔を見つける (Find the face)
- 画像内の野生のクマの顔を正確に特定するディープラーニングアルゴリズム
- 先ほど説明した Dog Hipsterizer を応用したもの
- 各面の向きを変える (Reorient each face)
- クマの顔の重要な 3 つの特徴をもとに最適な中央値に配置されたクマの顔と一致させる
- dlib C++ ライブラリ を使用
- 顔をエンコードする (Encode the face)
- 目と耳のサイズの間の距離などを一連の測定値に変換する
- High Quality Face Recognition with Deep Metric Learning を参照
- 顔を合わせる (Match the face)
- データベース内から最も一致するクマを見つける
- サポートベクターマシン (SVM) という教師あり学習アルゴリズムを使用
詳細は、こちら より確認できます。
趣味で始めた機械学習による野生のクマの顔識別が、野生動物の保全に取り組む科学者にとって有益となる可能性が高いことを知ることになるのに時間はかかりませんでした。そこから既に同様の研究を始めていたビクトリア大学の研究員であるメラニーさんと立ち上げたのが、BearID Project です。
この BearID (クマの顔識別技術) を用いて野生のクマを特定して監視し、保護を促進することができます。
Bearcam Companion
BearCam Companion は、ライブカメラのコメントに多く寄せられる「あのクマはなんという名前ですか?」という質問に対応するべく、ユーザーがどのクマがどれであるかを識別できるようにすることを目標に開発が始まりました。
コンセプト
- ライブカメラから画像の取得
- 自動で画像内のクマを検知
- ログインしたユーザーはクマの識別に協力できる
- ユーザーはクマのイメージやその ID を確認できる
- 管理者はさまざまな編集ができる
Web アプリケーションの仕事を最近していなかったエドさんは、いくつかの AWS Amplify のチュートリアルなどを確認し、ウェブサービスの設定とウェブフロントエンド UI への接続を容易にするビジュアル インターフェイスである AWS Amplify Studio を使用しはじめました。
Bearcam Companion で使用されているデータモデル
データモデルのセットアップを開始するにはまずは画像が必要となります。
イメージモデルの作成
- 画像の URL や画像が撮られた日付など画像にまつわる情報を保存
- ブルックス川の野生のクマのスナップショットから画像を使用
画像を取得したら、オブジェクト検出モデルを使用してクマを見つけます。
オブジェクト(検出)モデルの作成
- 画像からラベル (「クマ」など)、信頼レベル、境界ボックスの情報 (幅、高さ) など詳細を把握してクマのデータを保存
- 画像からのデータの取得には Amazon Rekognition を使用
ウェブアプリケーション上での UI の向上のため、UI ライブラリを使用しました。
UI ライブラリの使用
- 最新の画像のリストを表示させる(StandardCard、FrameCollection)
- Figma のサンプルを Amplify UI ライブラリと同期
フロントエンド(React)の実装
- Amplify バックエンドに接続してブラウザでアプリを表示、境界ボックスの描画など
ユーザー認証の実装
- AWS Amplify Studio を利用したアプリへのサインイン/サインアップ機能
- 各ユーザーに一つの ID を関連付ける
識別モデルの作成
- クマの名前 name と、識別を行ったユーザーのユーザー名 user を含むデータ
- ボックス内の個々のクマの識別情報がすべて得られるように
- ユーザーによるクマの名前ごとの投票の集計結果を表示させる実装なども行った
S3Object モデルの作成
- バケット、リージョン、およびキーの情報が含まれたモデル
- 画像ファイルを S3 にアップロードし、メタデータを DynamoDB のテーブルに保存
Lambda 関数の使用
- DynamoDB の Images テーブルへの新しい画像情報の追加をトリガーとして Rekognition を起動
AWS Amplify Hosting の使用
- Amplify を使用してアプリケーションをホスト
- GitHub からの自動ビルドやカスタムドメインの設定
こうして完成した Bearcam Companion のデモが以下の通りです。
参考資料
iPhone のボイスメモでセッションの録音をしていたのですが、開発者チャットはベネチアンの Expo の一角で行われているために騒音が激しく、内容をほぼ聞き返すことができませんでした。そのため、本レポートは以下のブログを参照しました。
(※ 開発者チャットは PDF や YouTube での動画公開はありません。)
感想
北米の野生動物の保護という内容はすごく興味関心のあるところなので、真剣に聞いていたのですが Bearcam Companion からの情報の洪水についていけませんでした(笑)。開発者チャットなのだから、そこら辺を覚悟しておくべきでした。個人的には、あまりオペの仕事では出てこない AWS Amplify が色々な用途で使えるというのを知ることができて面白かったです。あと、IT エンジニアがこういう形で野生動物保護に関われるというのは自分にとって目から鱗的なところがありました。